The messaging systems enable an entity capable of generating messages (hereinafter referred to as a message producer) to communicate with a remote entity capable of processing the generated messages (hereinafter referred to as a message consumer) through a common channel. In certain messaging systems, the message producer and the message consumer refer to a common channel using a channel identifier. Naming services, such as Java Naming and Directory Interface (JNDI) ensure the unique identification of channels across the messaging systems. However, these services cannot validate if the message producer and message consumer registered on the channel are compatible with each other.
Certain messaging systems use enterprise service bus (ESB) that provides a centralized message bus through which all messages between various entities flow. The ESB may be implemented in messaging systems when all the messaging entities (e.g., message producers/originators and message consumers/receivers) in the system have been developed/configured beforehand and are ready for sending and receiving messages. This limits evolution of the distributed systems because it prevents addition and deletion of the messaging entities or introduction of new message types, after the messaging system has been set up.
Further, in a distributed/dynamic application environment, there may be more than one message consumers available for the message producer. In such cases, though the message producer has multiple potential message consumers, the existing messaging systems do not allow the message producer to validate the most appropriate message consumer.